基于 JDBC 开发
最近更新时间: 2024-10-17 17:10:00
JDBC 驱动包
可前往 官网 获取,或者向软件提供商获取。
驱动类
在代码中创建数据库连接之前,需要加载数据库驱动类“org.postgresql.Driver”。
连接参数
使用 JDBC 连接数据库,由 URL 指定具体连接的数据库,可采用以下的几种形式:
jdbc:postgresql:database
jdbc:postgresql://host/database
jdbc:postgresql://host:port/database
参数含义如下:
host:服务器的主机名。默认为 localhost,要指定 IPv6 地址,您必须将 host 参数括在方括号中,例如 Jdbc:postgresql:// 127.0.0.1:5740/accounting。
port:服务器正在监听的端口号。
database:数据库名称。
除标准连接参数外,驱动程序还支持许多其他属性,这些属性可用于指定特定于其他驱动程序行为。这些属性可以在连接 URL 或附加 Properties 对象参数中指定 DriverManager.getConnection。
user:string 类型,表示创建连接的数据库用户。
password:string 类型,表示数据库用户的密码。
ssl:Boolean 类型,表示是否使用 SSL 连接。
loggerLevel:string 类型,为 LogStream 或 LogWriter 设置记录进 DriverManager 当前值的日志信息量。目前支持 OFF、DEBUG 和 TRACE。
值为 DEBUG 时,表示只打印 DEBUG 级别以上的日志,将记录非常少的信息。
值等于 TRACE 时,表示打印 DEBUG 和 TRACE 级别的日志,将产生详细的日志信息。默认值为 OFF,表示不打印日志。
prepareThreshold:integer类型,用于确定在转换为服务器端的预备语句之前,要求执行方法 PreparedStatement 的次数。缺省值是5。
batchMode:boolean 类型,用于确定是否使用 batch 模式连接。
Fetchsize:integer 类型,用于设置数据库链接所创建 statement 的默认 fetchsize。
ApplicationName:string 类型,应用名称,在不做设置时,缺省值为 PostgreSQL JDBC Driver。
allowReadOnly:boolean 类型,用于设置 connection 是否允许设置 readonly 模式,默认为 false,若该参数不被设置为 true,则执行 connnection.setReadOnly 不生效。
blobMode:string 类型,用于设置 setBinaryStream 方法为不同的数据类型赋值,设置为 on 时表示为 blob 数据类型赋值,设置为 off 时表示为 bytea 数据类型赋值,默认为 on。
connectionExtraInfo:boolean 类型,表示驱动是否上报当前驱动的部署路径、进程属主用户到数据库。
示例:
public static Connection GetConnection(String username, String passwd)
{
//驱动类
String driver = "org.postgresql.Driver";
//数据库连接描述符
String sourceURL = "jdbc:postgresql://10.10.0.13:11345/tdapg";
Connection conn = null;
try
{
//加载驱动
Class.forName(driver);
}
catch( Exception e )
{
e.printStackTrace();
return null;
}
try
{
//创建连接
conn = DriverManager.getConnection(sourceURL, username, passwd);
System.out.println("Connection succeed!");
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
return conn;
};
示例代码
连接、建表、batch 插入、更新等 Java 连接 demo。
package Demo;
import java.sql.*;
public class tdapg_Conn {
public static Connection GetConnection(String username, String passwd) {
String driver = "org.postgresql.Driver";
String sourceURL = "jdbc:postgresql://100.1.1.1:11345/v3";
Connection conn = null;
try {
Class.forName(driver).newInstance();
} catch (Exception e) {
e.printStackTrace();
return null;
}
try {
conn = DriverManager.getConnection(sourceURL, username, passwd);
System.out.println("Connection succeed!");
} catch (Exception e) {
e.printStackTrace();
return null;
}
return conn;
};
public static void CreateTable(Connection conn) {
Statement stmt = null;
try {
stmt = conn.createStatement();
int rc = stmt.executeUpdate("CREATE TABLE user_table(user_id INTEGER, user_name VARCHAR(32));");
stmt.close();
System.out.println("TABLE customer_t1 create Successful!");
} catch (SQLException e) {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
e.printStackTrace();
}
}
public static void BatchInsertData(Connection conn) {
PreparedStatement pst = null;
try {
pst = conn.prepareStatement("INSERT INTO user_table VALUES (?,?)");
for (int i = 0; i < 3; i++) {
pst.setInt(1, i);
pst.setString(2, "data " + i);
pst.addBatch();
}
pst.executeBatch();
pst.close();
System.out.println("Insert succeed!");
} catch (SQLException e) {
if (pst != null) {
try {
pst.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
e.printStackTrace();
}
}
public static void ExecPreparedSQL(Connection conn) {
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement("UPDATE user_table SET user_name = ? WHERE user_id = 1");
pstmt.setString(1, "new Data");
int rowcount = pstmt.executeUpdate();
pstmt.close();
System.out.println("Update succeed!");
} catch (SQLException e) {
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
e.printStackTrace();
}
}
public static void main(String[] args) {
Connection conn = GetConnection("dbadmin", "tdapg@2021");
CreateTable(conn);
BatchInsertData(conn);
ExecPreparedSQL(conn);
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
执行结果: